home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / vil310 / vil / vil_bas.bas < prev    next >
BASIC Source File  |  1995-02-20  |  24KB  |  623 lines

  1. 10000 *VIL_BAS_VER
  2. 10005 VIL_VER%=310
  3. 10010 RETURN
  4. 10015 *VIL_ENV_INITM
  5. 10020 IF VIL_E%=0 THEN
  6. 10025 VIL_ENV_ENV$="APPLI.ENV"
  7. 10030 VIL_ENV_ORG$="APPLI.ORG"
  8. 10035 VIL_W0%=SEARCH(VIL_ENVNAM$,"APPLIENV"):IF VIL_W0%>-1 THEN VIL_ENV_ENV$=VIL_ENVVAL$(VIL_W0%)
  9. 10040 VIL_W0%=SEARCH(VIL_ENVNAM$,"APPLIORG"):IF VIL_W0%>-1 THEN VIL_ENV_ORG$=VIL_ENVVAL$(VIL_W0%)
  10. 10045 ENDIF
  11. 10050 RETURN
  12. 10055 *VIL_ENV_ROP
  13. 10060 VIL_E%=0:OPEN"I",#1,VIL_ENV_ENV$
  14. 10065 IF VIL_E%THEN VIL_E%=0:OPEN"I",#1,VIL_ENV_ORG$
  15. 10070 RETURN
  16. 10075 *VIL_ENV_RCL
  17. 10080 CLOSE#1:RETURN
  18. 10085 *VIL_ENV_WOP
  19. 10090 VIL_E%=0:OPEN"O",#1,VIL_ENV_ENV$
  20. 10095 IF VIL_E%=64 THEN KILL VIL_ENV_ENV$:VIL_E%=0:OPEN"O",#1,VIL_ENV_ENV$
  21. 10100 RETURN
  22. 10105 *VIL_ENV_WCL
  23. 10110 CLOSE#1:RETURN
  24. 10115 *VIL_ENV_ERR
  25. 10120 CLS
  26. 10125 PRINT"環境ファイルにエラーがあります"
  27. 10130 PRINT"エラー行:";VIL_W0$
  28. 10135 STOP
  29. 10140 RETURN
  30. 10145 *VIL_BEEP_INITM
  31. 10150 IF VIL_E%=0 THEN
  32. 10155 VIL_BEEP_F%=-1
  33. 10160 ENDIF
  34. 10165 RETURN
  35. 10170 *VIL_BEEP_ENVR
  36. 10175 VIL_W0$="":WHILE VIL_W0$<>"#BEEP":GOSUB*VIL_LNR:WEND
  37. 10180 GOSUB*VIL_LNR:VIL_BEEP_F%=VAL(VIL_W0$)
  38. 10185 RETURN
  39. 10190 *VIL_BEEP_ENVW
  40. 10195 PRINT#1,"#BEEP"
  41. 10200 PRINT#1,VIL_BEEP_F%
  42. 10205 RETURN
  43. 10210 *VIL_BEEP_G
  44. 10215 IF VIL_BEEP_F%THEN FOR VIL_I%=1 TO 4:BEEP 363523,5,400:WAIT 5:NEXT
  45. 10220 RETURN
  46. 10225 *VIL_BEEP_B
  47. 10230 IF VIL_BEEP_F%THEN BEEP 363523,40,80:WAIT 40
  48. 10235 RETURN
  49. 10240 *VIL_WIN_INITM
  50. 10245 IF VIL_E%=0 THEN
  51. 10250 VIL_WIN_X%=0:VIL_WIN_Y%=0:VIL_WIN_W%=0:VIL_WIN_Z%=0
  52. 10255 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
  53. 10260 VIL_WIN_AN%=0:VIL_WIN_PM%=0
  54. 10265 VIL_WIN_BFMAX&=VIL_W0&:VIL_WIN_ANMAX%=VIL_W1%
  55. 10270 DIM VIL_WIN_BF%(VIL_W0&),VIL_WIN_BFO&(VIL_W1%)
  56. 10275 DIM VIL_WIN_X%(VIL_W1%),VIL_WIN_Y%(VIL_W1%),VIL_WIN_W%(VIL_W1%),VIL_WIN_Z%(VIL_W1%)
  57. 10280 VIL_WIN_X%(0)=0:VIL_WIN_Y%(0)=0:VIL_WIN_W%(0)=639:VIL_WIN_Z%(0)=479
  58. 10285 ENDIF
  59. 10290 RETURN
  60. 10295 *VIL_WIN_ENVR
  61. 10300 VIL_W0$="":WHILE VIL_W0$<>"#WIN":GOSUB*VIL_LNR:WEND
  62. 10305 RETURN
  63. 10310 *VIL_WIN_ENVW
  64. 10315 PRINT#1,"#WIN"
  65. 10320 RETURN
  66. 10325 *VIL_WIN_OP
  67. 10330 VIL_WIN_AN%=VIL_WIN_AN%+1
  68. 10335 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X%:VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y%
  69. 10340 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W%:VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z%
  70. 10345 VIL_WIN_BFO&(VIL_WIN_AN%)=VIL_WIN_BFO&(VIL_WIN_AN%-1)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+VIL_WIN_LB%+VIL_WIN_RB%+8)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+VIL_WIN_UB%+VIL_WIN_DB%+1)*4+1)/2)
  71. 10350 VIL_E%=0
  72. 10355 GET@A(VIL_WIN_X%-VIL_WIN_LB%,VIL_WIN_Y%-VIL_WIN_UB%)-(VIL_WIN_W%+VIL_WIN_RB%,VIL_WIN_Z%+VIL_WIN_DB%),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  73. 10360 IF VIL_E%THEN
  74. 10365 VIL_WIN_AN%=VIL_WIN_AN%-1
  75. 10370 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  76. 10375 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  77. 10380 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  78. 10385 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  79. 10390 ENDIF
  80. 10395 RETURN
  81. 10400 *VIL_WIN_CL
  82. 10405 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-VIL_WIN_LB%,VIL_WIN_Y%(VIL_WIN_AN%)-VIL_WIN_UB%)-(VIL_WIN_W%(VIL_WIN_AN%)+VIL_WIN_RB%,VIL_WIN_Z%(VIL_WIN_AN%)+VIL_WIN_DB%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  83. 10410 VIL_WIN_AN%=VIL_WIN_AN%-1
  84. 10415 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  85. 10420 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  86. 10425 RETURN
  87. 10430 *VIL_WIN_CLDMY
  88. 10435 VIL_WIN_AN%=VIL_WIN_AN%-1
  89. 10440 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  90. 10445 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  91. 10450 RETURN
  92. 10455 *VIL_WIN_CLALL
  93. 10460 WHILE VIL_WIN_AN%
  94. 10465 GOSUB*VIL_WIN_CL
  95. 10470 WEND
  96. 10475 RETURN
  97. 10480 *VIL_WIN_PMR
  98. 10485 VIL_WIN_PM%=-1
  99. 10490 VIEW(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%)
  100. 10495 WINDOW(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%)
  101. 10500 RETURN
  102. 10505 *VIL_WIN_PMA
  103. 10510 VIL_WIN_PM%=0
  104. 10515 VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
  105. 10520 RETURN
  106. 10525 *VIL_VKEY_INITM
  107. 10530 IF VIL_E%=0 THEN
  108. 10535 VIL_VKEY_KY%=0:VIL_VKEY_PRM%=0:VIL_VKEY_TC$="":VIL_VKEY_TCB$=""
  109. 10540 DIM VIL_VKEY_KB%(255),VIL_VKEY_PAD%(107)
  110. 10545 VIL_W0$="":WHILE VIL_W0$<>"#VKEY":GOSUB*VIL_LNR:WEND
  111. 10550 FOR VIL_I%=0 TO 240 STEP 16
  112. 10555 GOSUB*VIL_LNR
  113. 10560 FOR VIL_J%=0 TO 15
  114. 10565 VIL_VKEY_KB%(VIL_I%+VIL_J%)=VAL(VIL_W0$)
  115. 10570 VIL_W0%=INSTR(VIL_W0$,",")+1
  116. 10575 IF VIL_W0%>1 THEN VIL_W0$=MID$(VIL_W0$,VIL_W0%)
  117. 10580 NEXT
  118. 10585 NEXT
  119. 10590 FOR VIL_I%=0 TO 99 STEP 9
  120. 10595 GOSUB*VIL_LNR
  121. 10600 FOR VIL_J%=0 TO 8
  122. 10605 VIL_VKEY_PAD%(VIL_I%+VIL_J%)=VAL(VIL_W0$)
  123. 10610 VIL_W0%=INSTR(VIL_W0$,",")+1
  124. 10615 IF VIL_W0%>1 THEN VIL_W0$=MID$(VIL_W0$,VIL_W0%)
  125. 10620 NEXT
  126. 10625 NEXT
  127. 10630 ENDIF
  128. 10635 RETURN
  129. 10640 *VIL_VKEY_ENVR
  130. 10645 VIL_W0$="":WHILE VIL_W0$<>"#VKEY":GOSUB*VIL_LNR:WEND
  131. 10650 RETURN
  132. 10655 *VIL_VKEY_ENVW
  133. 10660 PRINT#1,"#VKEY"
  134. 10665 RETURN
  135. 10670 *VIL_VKEY_KY
  136. 10675 VIL_K$=INKEY$:VIL_VKEY_KY%=-4
  137. 10680 IF VIL_K$<>""THEN
  138. 10685 VIL_KY%=ASC(VIL_K$):VIL_VKEY_KY%=VIL_VKEY_KB%(VIL_KY%)
  139. 10690 ELSE
  140. 10695 VIL_KY%=0:VIL_PAD%=PAD(1)+PTRIG(1)*9
  141. 10700 IF VIL_PAD%THEN
  142. 10705 IF VIL_VKEY_PRM%=0 THEN VIL_VKEY_PRM%=1:VIL_VKEY_KY%=VIL_VKEY_PAD%(VIL_PAD%)
  143. 10710 ELSE
  144. 10715 VIL_VKEY_PRM%=0:VIL_VKEY_KY%=-4
  145. 10720 ENDIF
  146. 10725 ENDIF
  147. 10730 RETURN
  148. 10735 *VIL_VKEY_SETTC
  149. 10740 VIL_VKEY_TCB$="":VIL_I%=1
  150. 10745 WHILE VIL_I%>0
  151. 10750 VIL_W0%=ASC(MID$(VIL_VKEY_TC$,VIL_I%,1))
  152. 10755 VIL_VKEY_TCB$=VIL_VKEY_TCB$+","+MID$(VIL_VKEY_TC$,VIL_I%,1)+STR$(VIL_VKEY_KB%(VIL_W0%))
  153. 10760 VIL_VKEY_KB%(VIL_W0%)=VAL(MID$(VIL_VKEY_TC$,VIL_I%+1))
  154. 10765 VIL_I%=INSTR(VIL_I%+1,VIL_VKEY_TC$,","):VIL_I%=VIL_I%-(VIL_I%>0)
  155. 10770 WEND
  156. 10775 RETURN
  157. 10780 *VIL_VKEY_RESETTC
  158. 10785 VIL_I%=2
  159. 10790 WHILE VIL_I%>0
  160. 10795 VIL_W0%=ASC(MID$(VIL_VKEY_SCB$,VIL_I%,1))
  161. 10800 VIL_VKEY_KB%(VIL_W0%)=VAL(MID$(VIL_VKEY_SCB$,VIL_I%+1))
  162. 10805 VIL_I%=INSTR(VIL_I%+1,VIL_VKEY_SCB$,","):VIL_I%=VIL_I%-(VIL_I%>0)
  163. 10810 WEND
  164. 10815 RETURN
  165. 10820 *VIL_MSEL_INITM
  166. 10825 IF VIL_E%=0 THEN
  167. 10830 VIL_MSEL_MN%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=9:VIL_MSEL_BN%=0
  168. 10835 VIL_MSEL_BC%=0:VIL_MSEL_BD%=0:VIL_MSEL_BAM%=0
  169. 10840 VIL_MSEL_WT%=50:VIL_MSEL_MRM%=0:VIL_MSEL_MKM%=0
  170. 10845 VIL_MSEL_CMN%=0:VIL_MSEL_CMR%=0:VIL_MSEL_CR%=0:VIL_MSEL_CRB%=0
  171. 10850 VIL_MSEL_R%=0
  172. 10855 DIM VIL_MSEL_X%(VIL_W1%),VIL_MSEL_Y%(VIL_W1%),VIL_MSEL_W%(VIL_W1%),VIL_MSEL_Z%(VIL_W1%)
  173. 10860 DIM VIL_MSEL_BN%(VIL_W0%)
  174. 10865 DIM VIL_MSEL_CX%(VIL_W2%),VIL_MSEL_CY%(VIL_W2%),VIL_MSEL_CW%(VIL_W2%),VIL_MSEL_CZ%(VIL_W2%)
  175. 10870 DIM VIL_MSEL_CN%(VIL_W2%),VIL_MSEL_CL%(VIL_W2%),VIL_MSEL_CBB%(VIL_W2%),VIL_MSEL_CBE%(VIL_W2%),VIL_MSEL_CBN%(VIL_W2%)
  176. 10875 VIL_W0$="":WHILE VIL_W0$<>"#MSEL":GOSUB*VIL_LNR:WEND
  177. 10880 GOSUB*VIL_LNR:VIL_MSEL_BCM%=VAL(VIL_W0$)
  178. 10885 MOUSE 0:MOUSE 1,320,240,0
  179. 10890 ENDIF
  180. 10895 RETURN
  181. 10900 *VIL_MSEL_ENVR
  182. 10905 VIL_W0$="":WHILE VIL_W0$<>"#MSEL":GOSUB*VIL_LNR:WEND
  183. 10910 GOSUB*VIL_LNR:VIL_MSEL_WT%=VAL(VIL_W0$)
  184. 10915 RETURN
  185. 10920 *VIL_MSEL_ENVW
  186. 10925 PRINT#1,"#MSEL"
  187. 10930 PRINT#1,VIL_MSEL_WT%
  188. 10935 RETURN
  189. 10940 *VIL_MSEL_M
  190. 10945 GOSUB*VIL_MSEL_BCMK
  191. 10950 GOSUB*VIL_MSEL_IN
  192. 10955 RETURN
  193. 10960 *VIL_MSEL_BCMK
  194. 10965 IF VIL_MSEL_BD%AND 2 THEN VIL_W1%=-1 ELSE VIL_W1%=1
  195. 10970 IF VIL_MSEL_BD%AND 4 THEN VIL_W2%=-1 ELSE VIL_W2%=1
  196. 10975 FOR VIL_I%=1 TO VIL_YN%
  197. 10980 FOR VIL_J%=1 TO VIL_XN%
  198. 10985 IF VIL_MSEL_BD%AND 1 THEN
  199. 10990 VIL_W0%=(VIL_J%-1)*VIL_YN%+VIL_I%-1+VIL_MSEL_BB%
  200. 10995 ELSE
  201. 11000 VIL_W0%=(VIL_I%-1)*VIL_XN%+VIL_J%-1+VIL_MSEL_BB%
  202. 11005 ENDIF
  203. 11010 VIL_MSEL_X%(VIL_W0%)=VIL_X%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  204. 11015 VIL_MSEL_Y%(VIL_W0%)=VIL_Y%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  205. 11020 VIL_MSEL_W%(VIL_W0%)=VIL_W%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  206. 11025 VIL_MSEL_Z%(VIL_W0%)=VIL_Z%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  207. 11030 NEXT
  208. 11035 NEXT
  209. 11040 RETURN
  210. 11045 *VIL_MSEL_IN
  211. 11050 VIL_W0%=-5:VIL_W1%=-6:VIL_W2%=-7:VIL_W3%=-8
  212. 11055 IF VIL_MSEL_BD%AND 2 THEN SWAP VIL_W0%,VIL_W1%
  213. 11060 IF VIL_MSEL_BD%AND 4 THEN SWAP VIL_W2%,VIL_W3%
  214. 11065 IF VIL_MSEL_BD%AND 1 THEN SWAP VIL_W0%,VIL_W3%:SWAP VIL_W1%,VIL_W2%:SWAP VIL_XN%,VIL_YN%
  215. 11070 MOUSE 1,,,1
  216. 11075 IF VIL_MSEL_MN%THEN VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  217. 11080 IF VIL_MSEL_BN%<VIL_MSEL_BB%OR VIL_MSEL_BE%<VIL_MSEL_BN%THEN VIL_MSEL_BN%=VIL_MSEL_BB%
  218. 11085 IF VIL_MSEL_BC%=0 THEN GOSUB*VIL_MSEL_BC
  219. 11090 *VIL_MSEL_IN_W0
  220. 11095 GOSUB*VIL_VKEY_KY
  221. 11100 IF MOUSE(6,0)THEN VIL_MSEL_MRM%=0
  222. 11105 IF MOUSE(2,0)THEN
  223. 11110 IF VIL_MSEL_MRM%=1 THEN WAIT VIL_MSEL_WT%
  224. 11115 IF VIL_MSEL_MRM%<2 THEN VIL_MSEL_MRM%=VIL_MSEL_MRM%+1
  225. 11120 ENDIF
  226. 11125 IF MOUSE(3,1)OR VIL_VKEY_KY%=-1 THEN
  227. 11130 VIL_W4%=MOUSE(3,0)
  228. 11135 VIL_KN%=-1
  229. 11140 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  230. 11145 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  231. 11150 IF VIL_WIN_PM%THEN
  232. 11155 VIL_KN%=-2
  233. 11160 IF VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  234. 11165 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  235. 11170 GOSUB*VIL_MSEL_BC:GOSUB*VIL_MSEL_BCCHK:GOSUB*VIL_MSEL_BC
  236. 11175 ENDIF
  237. 11180 ELSE
  238. 11185 VIL_MW%=VIL_MX%:VIL_MZ%=VIL_MY%
  239. 11190 GOSUB*VIL_MSEL_BC:GOSUB*VIL_MSEL_BCCHK:GOSUB*VIL_MSEL_BC
  240. 11195 VIL_MW%=-1
  241. 11200 ENDIF
  242. 11205 ELSE
  243. 11210 IF VIL_VKEY_KY%=-4 THEN
  244. 11215 GOTO*VIL_MSEL_IN_W0
  245. 11220 ELSE IF VIL_MSEL_BB%<=VIL_VKEY_KY%AND VIL_VKEY_KY%<=VIL_MSEL_BE%THEN
  246. 11225 VIL_KN%=VIL_VKEY_KY%
  247. 11230 GOSUB*VIL_MSEL_BC:VIL_MSEL_BN%=VIL_KN%:GOSUB*VIL_MSEL_BC
  248. 11235 ELSE IF VIL_VKEY_KY%=-2 THEN
  249. 11240 VIL_KN%=VIL_MSEL_BN%
  250. 11245 ELSE IF VIL_VKEY_KY%=-3 OR VIL_VKEY_KY%=-13 THEN
  251. 11250 VIL_KN%=VIL_VKEY_KY%
  252. 11255 ELSE
  253. 11260 IF VIL_MSEL_MKM%=1 THEN
  254. 11265 IF VIL_VKEY_KY%=-7 OR VIL_VKEY_KY%=-8 THEN VIL_KN%=VIL_VKEY_KY%:GOTO*VIL_MSEL_IN_W1
  255. 11270 ELSE IF VIL_MSEL_MKM%=2 THEN
  256. 11275 IF VIL_VKEY_KY%=-5 OR VIL_VKEY_KY%=-6 THEN VIL_KN%=VIL_VKEY_KY%:GOTO*VIL_MSEL_IN_W1
  257. 11280 ENDIF
  258. 11285 GOSUB*VIL_MSEL_BC
  259. 11290 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_VKEY_KY%=VIL_W0%)+(VIL_VKEY_KY%=VIL_W1%)+((VIL_VKEY_KY%=VIL_W2%)-(VIL_VKEY_KY%=VIL_W3%))*VIL_XN%
  260. 11295 VIL_MSEL_BN%=VIL_MSEL_BN%+(VIL_VKEY_KY%=VIL_W0%AND(VIL_MSEL_BN%MOD VIL_XN%)=1)*VIL_XN%
  261. 11300 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_VKEY_KY%=VIL_W1%AND((VIL_MSEL_BN%+1)MOD VIL_XN%)=1)*VIL_XN%
  262. 11305 VIL_MSEL_BN%=VIL_MSEL_BN%-((VIL_MSEL_BN%<VIL_MSEL_BB%)-(VIL_MSEL_BN%>VIL_MSEL_BE%))*(VIL_MSEL_BE%-VIL_MSEL_BB%+1)
  263. 11310 GOSUB*VIL_MSEL_BC
  264. 11315 GOTO*VIL_MSEL_IN_W0
  265. 11320 ENDIF
  266. 11325 ENDIF
  267. 11330 *VIL_MSEL_IN_W1
  268. 11335 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_MSEL_BN%:MOUSE 1,,,0:VIL_MSEL_BC%=-1
  269. 11340 RETURN
  270. 11345 *VIL_MSEL_BCCHK
  271. 11350 VIL_KN%=-2
  272. 11355 IF MSEL_BAM%=0 THEN
  273. 11360 IF(VIL_MSEL_BD%AND 1)=1 THEN
  274. 11365 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BE%STEP VIL_YN%
  275. 11370 IF VIL_MSEL_X%(VIL_I%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_I%)THEN
  276. 11375 FOR VIL_J%=VIL_I%TO VIL_I%+VIL_YN%-1
  277. 11380 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_J%)THEN
  278. 11385 VIL_KN%=VIL_J%:VIL_MSEL_BN%=VIL_KN%
  279. 11390 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  280. 11395 ENDIF
  281. 11400 NEXT
  282. 11405 ENDIF
  283. 11410 NEXT
  284. 11415 ELSE
  285. 11420 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1
  286. 11425 IF VIL_MSEL_X%(VIL_I%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_I%)THEN
  287. 11430 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN%
  288. 11435 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_J%)THEN
  289. 11440 VIL_KN%=VIL_J%:VIL_MSEL_BN%=VIL_KN%
  290. 11445 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  291. 11450 ENDIF
  292. 11455 NEXT
  293. 11460 ENDIF
  294. 11465 NEXT
  295. 11470 ENDIF
  296. 11475 ELSE
  297. 11480 IF(VIL_MSEL_BD%AND 1)=1 THEN
  298. 11485 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_YN%-1
  299. 11490 IF VIL_MSEL_Y%(VIL_I%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_I%)THEN
  300. 11495 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_YN%
  301. 11500 IF VIL_MSEL_X%(VIL_J%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_J%)THEN
  302. 11505 VIL_KN%=VIL_J%:VIL_MSEL_BN%=VIL_KN%
  303. 11510 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  304. 11515 ENDIF
  305. 11520 NEXT
  306. 11525 ENDIF
  307. 11530 NEXT
  308. 11535 ELSE
  309. 11540 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BE%STEP VIL_XN%
  310. 11545 IF VIL_MSEL_Y%(VIL_I%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_I%)THEN
  311. 11550 FOR VIL_J%=VIL_I%TO VIL_I%+VIL_XN%-1
  312. 11555 IF VIL_MSEL_X%(VIL_J%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_J%)THEN
  313. 11560 VIL_KN%=VIL_J%:VIL_MSEL_BN%=VIL_KN%
  314. 11565 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  315. 11570 ENDIF
  316. 11575 NEXT
  317. 11580 ENDIF
  318. 11585 NEXT
  319. 11590 ENDIF
  320. 11595 ENDIF
  321. 11600 RETURN
  322. 11605 *VIL_MSEL_CNFM
  323. 11610 VIL_MSEL_BD%=0:VIL_MSEL_MKM%=1
  324. 11615 IF VIL_MSEL_BC%=0 THEN
  325. 11620 FOR VIL_MSEL_CR%=1 TO VIL_MSEL_CMR%
  326. 11625 GOSUB*VIL_MSEL_CNFM_W0
  327. 11630 GOSUB*VIL_MSEL_BCMK
  328. 11635 VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  329. 11640 GOSUB*VIL_MSEL_LC
  330. 11645 NEXT
  331. 11650 ENDIF
  332. 11655 VIL_MSEL_CR%=VIL_MSEL_BN%(VIL_MSEL_CMN%)
  333. 11660 IF VIL_MSEL_CR%<1 OR VIL_MSEL_CMR%<VIL_MSEL_CR%THEN VIL_MSEL_CR%=1
  334. 11665 VIL_KN%=-6
  335. 11670 WHILE-9<VIL_KN%AND VIL_KN%<-4
  336. 11675 GOSUB*VIL_MSEL_CNFM_W0
  337. 11680 GOSUB*VIL_MSEL_BCMK:VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  338. 11685 GOSUB*VIL_MSEL_LC
  339. 11690 VIL_MSEL_BC%=0
  340. 11695 GOSUB*VIL_MSEL_IN
  341. 11700 GOSUB*VIL_MSEL_BC:GOSUB*VIL_MSEL_LC
  342. 11705 IF VIL_KN%=-2 THEN
  343. 11710 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_MSEL_BN%
  344. 11715 IF VIL_WIN_PM%=0 THEN VIL_MW%=VIL_MX%:VIL_MZ%=VIL_MY%
  345. 11720 VIL_MSEL_CRB%=VIL_MSEL_CR%
  346. 11725 FOR VIL_I%=1 TO VIL_MSEL_CMR%
  347. 11730 IF VIL_MSEL_CY%(VIL_I%)<=VIL_MZ%AND VIL_MZ%<=VIL_MSEL_CZ%(VIL_I%)THEN
  348. 11735 VIL_MSEL_CR%=VIL_I%
  349. 11740 GOSUB*VIL_MSEL_CNFM_W0
  350. 11745 GOSUB*VIL_MSEL_BCMK:GOSUB*VIL_MSEL_BCCHK
  351. 11750 IF VIL_KN%>-1 THEN
  352. 11755 GOSUB*VIL_MSEL_LC
  353. 11760 VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  354. 11765 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_KN%
  355. 11770 GOSUB*VIL_MSEL_LC
  356. 11775 ELSE
  357. 11780 VIL_MSEL_CR%=VIL_MSEL_CRB%
  358. 11785 VIL_KN%=-2
  359. 11790 ENDIF
  360. 11795 VIL_I%=VIL_MSEL_CMR%
  361. 11800 ENDIF
  362. 11805 NEXT
  363. 11810 IF VIL_WIN_PM%=0 THEN VIL_MW%=-1
  364. 11815 ELSE
  365. 11820 VIL_MSEL_CR%=VIL_MSEL_CR%+(VIL_KN%=-7)-(VIL_KN%=-8)
  366. 11825 VIL_MSEL_CR%=VIL_MSEL_CR%+((VIL_MSEL_CR%>VIL_MSEL_CMR%)-(VIL_MSEL_CR%<1))*VIL_MSEL_CMR%
  367. 11830 ENDIF
  368. 11835 WEND
  369. 11840 VIL_MSEL_BN%(VIL_MSEL_CMN%)=VIL_MSEL_CR%
  370. 11845 VIL_MSEL_MKM%=0
  371. 11850 RETURN
  372. 11855 *VIL_MSEL_CNFM_W0
  373. 11860 VIL_X%=VIL_MSEL_CX%(VIL_MSEL_CR%):VIL_Y%=VIL_MSEL_CY%(VIL_MSEL_CR%):VIL_W%=VIL_MSEL_CW%(VIL_MSEL_CR%):VIL_Z%=VIL_MSEL_CZ%(VIL_MSEL_CR%)
  374. 11865 VIL_XL%=VIL_MSEL_CL%(VIL_MSEL_CR%):VIL_XN%=VIL_MSEL_CN%(VIL_MSEL_CR%):VIL_YN%=1
  375. 11870 VIL_MSEL_BB%=VIL_MSEL_CBB%(VIL_MSEL_CR%):VIL_MSEL_BE%=VIL_MSEL_CBE%(VIL_MSEL_CR%)
  376. 11875 VIL_MSEL_MN%=VIL_MSEL_CMN%+VIL_MSEL_CR%
  377. 11880 RETURN
  378. 11885 *VIL_MSEL_CNFSV
  379. 11890 FOR VIL_I%=0 TO VIL_MSEL_CMR%:VIL_MSEL_CBN%(VIL_I%)=VIL_MSEL_BN%(VIL_MSEL_CMN%+VIL_I%):NEXT
  380. 11895 RETURN
  381. 11900 *VIL_MSEL_CNFLD
  382. 11905 FOR VIL_I%=0 TO VIL_MSEL_CMR%:VIL_MSEL_BN%(VIL_MSEL_CMN%+VIL_I%)=VIL_MSEL_CBN%(VIL_I%):NEXT
  383. 11910 RETURN
  384. 11915 *VIL_MSEL_BC
  385. 11920 IF VIL_MSEL_BCM%THEN
  386. 11925 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Y%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%,BF
  387. 11930 ELSE
  388. 11935 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Y%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%,B
  389. 11940 ENDIF
  390. 11945 RETURN
  391. 11950 *VIL_MSEL_LC
  392. 11955 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%
  393. 11960 RETURN
  394. 11965 *VIL_INP_INITM
  395. 11970 IF VIL_E%=0 THEN
  396. 11975 VIL_INP_L%=0:VIL_INP_CX%=0:VIL_INP_CKX%=0
  397. 11980 VIL_INP_HSP%=0:VIL_INP_HSN%=0:VIL_INP_HSMAX%=VIL_W0%
  398. 11985 VIL_INP_HSO$=""
  399. 11990 VIL_INP_HSB%=0:VIL_INP_HSE%=0
  400. 11995 VIL_INP_CF%=0
  401. 12000 DIM VIL_INP_HSB%(VIL_W0%),VIL_INP_HSE%(VIL_W0%)
  402. 12005 DIM VIL_INP_HSPP%(0),VIL_INP_HSNP%(0),VIL_INP_HS$(0)
  403. 12010 MOUSE 0:MOUSE 1,320,240,0
  404. 12015 ENDIF
  405. 12020 RETURN
  406. 12025 *VIL_INP_ENVR
  407. 12030 VIL_W0$="":WHILE VIL_W0$<>"#INP":GOSUB*VIL_LNR:WEND
  408. 12035 VIL_I%=1:VIL_INP_HSE%(0)=0
  409. 12040 WHILE VIL_I%<=VIL_INP_HSMAX%
  410. 12045 GOSUB*VIL_LNR:
  411. 12050 VIL_INP_HSB%(VIL_I%)=VIL_INP_HSE%(VIL_I%-1)+1
  412. 12055 VIL_INP_HSE%(VIL_I%)=VIL_INP_HSB%(VIL_I%)+VAL(VIL_W0$)-1
  413. 12060 VIL_I%=VIL_I%+1
  414. 12065 WEND
  415. 12070 VIL_W0%=VIL_INP_HSE%(VIL_INP_HSMAX%)
  416. 12075 ERASE VIL_INP_HSPP%,VIL_INP_HSNP%,VIL_INP_HS$
  417. 12080 DIM VIL_INP_HSPP%(VIL_W0%),VIL_INP_HSNP%(VIL_W0%),VIL_INP_HS$(VIL_W0%)
  418. 12085 VIL_I%=1
  419. 12090 WHILE VIL_I%<=VIL_INP_HSMAX%
  420. 12095 FOR VIL_J%=VIL_INP_HSB%(VIL_I%)TO VIL_INP_HSE%(VIL_I%)
  421. 12100 VIL_INP_HSPP%(VIL_J%)=VIL_J%-1:VIL_INP_HSNP%(VIL_J%)=VIL_J%+1:
  422. 12105 GOSUB*VIL_LNR:VIL_INP_HS$(VIL_J%)=MID$(VIL_W0$,2)
  423. 12110 NEXT
  424. 12115 VIL_INP_HSPP%(VIL_INP_HSB%(VIL_I%))=0:VIL_INP_HSNP%(VIL_INP_HSE%(VIL_I%))=0
  425. 12120 VIL_I%=VIL_I%+1
  426. 12125 WEND
  427. 12130 RETURN
  428. 12135 *VIL_INP_ENVW
  429. 12140 PRINT#1,"#INP"
  430. 12145 VIL_I%=1
  431. 12150 WHILE VIL_I%<=VIL_INP_HSMAX%
  432. 12155 VIL_W1%=0:VIL_W0%=VIL_INP_HSB%(VIL_I%)
  433. 12160 WHILE VIL_W0%
  434. 12165 VIL_W1%=VIL_W1%+1:VIL_W0%=VIL_INP_HSNP%(VIL_W0%)
  435. 12170 WEND
  436. 12175 PRINT#1,VIL_W1%
  437. 12180 VIL_I%=VIL_I%+1
  438. 12185 WEND
  439. 12190 VIL_I%=1
  440. 12195 WHILE VIL_I%<=VIL_INP_HSMAX%
  441. 12200 VIL_W0%=VIL_INP_HSB%(VIL_I%)
  442. 12205 WHILE VIL_W0%
  443. 12210 PRINT#1,"\"+VIL_INP_HS$(VIL_W0%)
  444. 12215 VIL_W0%=VIL_INP_HSNP%(VIL_W0%)
  445. 12220 WEND
  446. 12225 VIL_I%=VIL_I%+1
  447. 12230 WEND
  448. 12235 RETURN
  449. 12240 *VIL_INP_STR
  450. 12245 VIL_INP_L%=LEN(VIL_A$)
  451. 12250 VIL_INP_CX%=VIL_INP_L%:VIL_INP_CKX%=KLEN(VIL_A$,0)
  452. 12255 IF VIL_INP_HSN%THEN VIL_INP_HSP%=0:VIL_INP_CF%=0:VIL_INP_HSS$="":VIL_INP_HSB%=VIL_INP_HSB%(VIL_INP_HSN%):VIL_INP_HSE%=VIL_INP_HSE%(VIL_INP_HSN%)
  453. 12260 MOUSE 1,,,1
  454. 12265 VIL_KN%=1:GOSUB*VIL_INP_GPRINT:GOSUB*VIL_INP_STR_W0
  455. 12270 WHILE VIL_KN%>0
  456. 12275 GOSUB*VIL_VKEY_KY
  457. 12280 IF 128<=VIL_KY%AND VIL_KY%<=159 THEN VIL_W0$=VIL_K$:GOSUB*VIL_VKEY_KY:VIL_K$=VIL_W0$+VIL_K$
  458. 12285 IF MOUSE(3,1)OR VIL_VKEY_KY%=-1 THEN
  459. 12290 VIL_KN%=-1
  460. 12295 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  461. 12300 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  462. 12305 IF VIL_WIN_PM%THEN
  463. 12310 IF VIL_WIN_PM%AND VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  464. 12315 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  465. 12320 ELSE
  466. 12325 VIL_MW%=-1
  467. 12330 ENDIF
  468. 12335 ENDIF
  469. 12340 VIL_KN%=-2
  470. 12345 ELSE IF VIL_VKEY_KY%=-4 THEN
  471. 12350 VIL_KN%=1
  472. 12355 ELSE IF VIL_VKEY_KY%=-2 THEN
  473. 12360 IF VIL_INP_HSN%AND VIL_A$<>""THEN
  474. 12365 GOSUB*VIL_INP_HSSA
  475. 12370 IF VIL_INP_HSP%=0 OR VIL_INP_HSP%=VIL_INP_HSB%THEN
  476. 12375 VIL_INP_HSO$=VIL_INP_HS$(VIL_INP_HSB%)
  477. 12380 VIL_INP_HS$(VIL_INP_HSB%)=VIL_A$
  478. 12385 VIL_INP_HSNP%(VIL_INP_HSE%)=VIL_INP_HSB%
  479. 12390 VIL_INP_HSPP%(VIL_INP_HSB%)=VIL_INP_HSE%
  480. 12395 VIL_INP_HSB%=VIL_INP_HSNP%(VIL_INP_HSB%)
  481. 12400 VIL_INP_HSE%=VIL_INP_HSNP%(VIL_INP_HSE%)
  482. 12405 VIL_INP_HSPP%(VIL_INP_HSB%)=0
  483. 12410 VIL_INP_HSNP%(VIL_INP_HSE%)=0
  484. 12415 ELSE IF VIL_INP_HSP%<>VIL_INP_HSE%THEN
  485. 12420 VIL_INP_HSPP%(VIL_INP_HSNP%(VIL_INP_HSP%))=VIL_INP_HSPP%(VIL_INP_HSP%)
  486. 12425 VIL_INP_HSNP%(VIL_INP_HSPP%(VIL_INP_HSP%))=VIL_INP_HSNP%(VIL_INP_HSP%)
  487. 12430 VIL_INP_HSNP%(VIL_INP_HSE%)=VIL_INP_HSP%
  488. 12435 VIL_INP_HSPP%(VIL_INP_HSP%)=VIL_INP_HSE%
  489. 12440 VIL_INP_HSNP%(VIL_INP_HSP%)=0
  490. 12445 VIL_INP_HSE%=VIL_INP_HSP%
  491. 12450 ENDIF
  492. 12455 ENDIF
  493. 12460 VIL_KN%=0
  494. 12465 ELSE IF VIL_VKEY_KY%=-13 THEN
  495. 12470 VIL_KN%=-13
  496. 12475 ELSE
  497. 12480 GOSUB*VIL_INP_STR_W0
  498. 12485 IF VIL_KY%>=32 AND VIL_KY%<>127 THEN
  499. 12490 VIL_W0%=KTYPE(VIL_K$,1)+1
  500. 12495 IF VIL_INP_L%+VIL_W0%<=VIL_L%THEN
  501. 12500 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+VIL_K$+MID$(VIL_A$,VIL_INP_CX%+1)
  502. 12505 VIL_INP_L%=VIL_INP_L%+VIL_W0%
  503. 12510 IF VIL_INP_L%<VIL_L%THEN
  504. 12515 VIL_INP_CKX%=VIL_INP_CKX%+1:VIL_INP_CX%=VIL_INP_CX%+VIL_W0%
  505. 12520 ENDIF
  506. 12525 GOSUB*VIL_INP_GPRINT
  507. 12530 VIL_INP_CF%=-1
  508. 12535 ENDIF
  509. 12540 ELSE IF VIL_VKEY_KY%=-7 OR VIL_VKEY_KY%=-8 THEN
  510. 12545 IF VIL_INP_HSN%THEN
  511. 12550 GOSUB*VIL_INP_HSSP
  512. 12555 VIL_INP_L%=LEN(VIL_A$):VIL_INP_CX%=VIL_INP_L%:VIL_INP_CKX%=KLEN(VIL_A$,0):VIL_INP_CF%=0
  513. 12560 GOSUB*VIL_INP_GPRINT
  514. 12565 ENDIF
  515. 12570 ELSE IF VIL_VKEY_KY%=-5 THEN
  516. 12575 IF VIL_INP_CX%<VIL_INP_L%THEN
  517. 12580 VIL_INP_CKX%=VIL_INP_CKX%+1:VIL_W0%=VIL_INP_CX%
  518. 12585 IF VIL_INP_CKX%<KLEN(VIL_A$)+1 THEN VIL_INP_CX%=VIL_INP_CX%+1+KTYPE(VIL_A$,VIL_INP_CKX%)ELSE VIL_INP_CX%=VIL_INP_CX%+1
  519. 12590 IF VIL_INP_CX%=VIL_L%THEN VIL_INP_CX%=VIL_W0%:VIL_INP_CKX%=VIL_INP_CKX%-1
  520. 12595 ENDIF
  521. 12600 ELSE IF VIL_VKEY_KY%=-6 THEN
  522. 12605 IF VIL_INP_CX%>0 THEN
  523. 12610 VIL_INP_CKX%=VIL_INP_CKX%-1
  524. 12615 VIL_INP_CX%=VIL_INP_CX%-1-KTYPE(VIL_A$,VIL_INP_CKX%+1)
  525. 12620 ENDIF
  526. 12625 ELSE IF VIL_VKEY_KY%=-15 AND VIL_INP_CX%>0 THEN
  527. 12630 VIL_INP_CKX%=VIL_INP_CKX%-1
  528. 12635 VIL_W0%=KTYPE(VIL_A$,VIL_INP_CKX%+1)+1
  529. 12640 VIL_INP_L%=VIL_INP_L%-VIL_W0%:VIL_INP_CX%=VIL_INP_CX%-VIL_W0%
  530. 12645 VIL_A$=KLEFT$(VIL_A$,VIL_INP_CKX%)+KMID$(VIL_A$,VIL_INP_CKX%+2)
  531. 12650 GOSUB*VIL_INP_GPRINT
  532. 12655 VIL_INP_CF%=-1
  533. 12660 ELSE IF VIL_VKEY_KY%=-16 AND VIL_INP_CX%<VIL_INP_L%THEN
  534. 12665 VIL_INP_L%=VIL_INP_L%-KTYPE(VIL_A$,VIL_INP_CKX%+1)-1
  535. 12670 VIL_A$=KLEFT$(VIL_A$,VIL_INP_CKX%)+KMID$(VIL_A$,VIL_INP_CKX%+2)
  536. 12675 GOSUB*VIL_INP_GPRINT
  537. 12680 VIL_INP_CF%=-1
  538. 12685 ELSE IF VIL_VKEY_KY%=-17 THEN
  539. 12690 VIL_A$="":VIL_INP_L%=0:VIL_INP_CX%=0:VIL_INP_CKX%=0
  540. 12695 GOSUB*VIL_INP_GPRINT
  541. 12700 VIL_INP_CF%=-1
  542. 12705 ENDIF
  543. 12710 GOSUB*VIL_INP_STR_W0:VIL_KN%=1
  544. 12715 ENDIF
  545. 12720 WEND
  546. 12725 MOUSE 1,,,0
  547. 12730 IF VIL_INP_HSN%THEN VIL_INP_HSB%(VIL_INP_HSN%)=VIL_INP_HSB%:VIL_INP_HSE%(VIL_INP_HSN%)=VIL_INP_HSE%
  548. 12735 GOSUB*VIL_INP_STR_W0
  549. 12740 RETURN
  550. 12745 *VIL_INP_STR_W0
  551. 12750 VIL_W0%=7
  552. 12755 IF VIL_INP_CX%<VIL_INP_L%THEN IF KTYPE(VIL_A$,VIL_INP_CKX%+1)THEN VIL_W0%=15
  553. 12760 LINE(VIL_X%+VIL_INP_CX%*8,VIL_Y%+17)-(VIL_X%+VIL_INP_CX%*8+VIL_W0%,VIL_Y%+17),XOR,%VIL_C%
  554. 12765 RETURN
  555. 12770 *VIL_INP_HSSA
  556. 12775 VIL_INP_HSP%=VIL_INP_HSE%(VIL_INP_HSN%)
  557. 12780 WHILE VIL_INP_HSP%AND VIL_INP_HS$(VIL_INP_HSP%)<>VIL_A$
  558. 12785 VIL_INP_HSP%=VIL_INP_HSPP%(VIL_INP_HSP%)
  559. 12790 WEND
  560. 12795 RETURN
  561. 12800 *VIL_INP_HSSP
  562. 12805 IF VIL_INP_CF%THEN VIL_INP_HSS$=VIL_A$:VIL_INP_HSP%=0
  563. 12810 IF VIL_INP_HSP%=0 THEN
  564. 12815 IF VIL_VKEY_KY%=-7 THEN VIL_INP_HSP%=VIL_INP_HSE%ELSE VIL_INP_HSP%=VIL_INP_HSB%
  565. 12820 ELSE
  566. 12825 IF VIL_VKEY_KY%=-7 THEN VIL_INP_HSP%=VIL_INP_HSPP%(VIL_INP_HSP%)ELSE VIL_INP_HSP%=VIL_INP_HSNP%(VIL_INP_HSP%)
  567. 12830 ENDIF
  568. 12835 VIL_W0%=LEN(VIL_INP_HSS$)
  569. 12840 WHILE VIL_INP_HSP%AND(LEFT$(VIL_INP_HS$(VIL_INP_HSP%),VIL_W0%)<>VIL_INP_HSS$OR VIL_INP_HS$(VIL_INP_HSP%)="")
  570. 12845 IF VIL_VKEY_KY%=-7 THEN VIL_INP_HSP%=VIL_INP_HSPP%(VIL_INP_HSP%)ELSE VIL_INP_HSP%=VIL_INP_HSNP%(VIL_INP_HSP%)
  571. 12850 WEND
  572. 12855 IF VIL_INP_HSP%THEN VIL_A$=VIL_INP_HS$(VIL_INP_HSP%)ELSE VIL_A$=VIL_INP_HSS$
  573. 12860 RETURN
  574. 12865 *VIL_INP_GPRINT
  575. 12870 LINE(VIL_X%,VIL_Y%)-(VIL_X%+VIL_L%*8-1,VIL_Y%+15),PSET,%VIL_CB%,BF
  576. 12875 SYMBOL(VIL_X%,VIL_Y%),VIL_A$,1,1,%VIL_C%
  577. 12880 RETURN
  578. 12885 *VIL_INP_FEPON
  579. 12890 CONSOLE 0,24,2
  580. 12895 VIL_W0%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  581. 12900 VIL_E%=0
  582. 12905 GET@A(0,464)-(639,479),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%)
  583. 12910 IF VIL_E%=0 THEN LINE(0,464)-(639,479),PSET,0,BF
  584. 12915 IF VIL_W0%THEN GOSUB*VIL_WIN_PMR
  585. 12920 RETURN
  586. 12925 *VIL_INP_FEPOFF
  587. 12930 CONSOLE 0,25,0
  588. 12935 VIL_W0%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA
  589. 12940 PUT@A(0,464)-(639,479),VIL_WIN_BF%,PSET,,,,VIL_WIN_BFO&(VIL_WIN_AN%)
  590. 12945 IF VIL_W0%THEN GOSUB*VIL_WIN_PMR
  591. 12950 RETURN
  592. 12955 *VIL_INP_MVWAIT
  593. 12960 VIL_W0%=MOUSE(9)+MOUSE(10):VIL_W0$=INKEY$
  594. 12965 WHILE ABS(MOUSE(9))<10 AND ABS(MOUSE(10))<10 AND MOUSE(3,0)+MOUSE(3,1)=0 AND INKEY$=""AND PAD(1)+PTRIG(1)=0:WEND
  595. 12970 RETURN
  596. 12975 *VIL_MG_INITM
  597. 12980 IF VIL_E%=0 THEN
  598. 12985 VIL_MG_X%=0:VIL_MG_Y%=0:VIL_MG_GN%=0:VIL_MG_PN%=0
  599. 12990 DIM VIL_MG_MGD%(VIL_W0&),VIL_MG_MGI&(VIL_W1%),VIL_MG_MPD%(VIL_W2&),VIL_MG_MPI&(VIL_W3%)
  600. 12995 VIL_W0$="":WHILE VIL_W0$<>"#MG":GOSUB*VIL_LNR:WEND
  601. 13000 ENDIF
  602. 13005 RETURN
  603. 13010 *VIL_MG_ENVR
  604. 13015 VIL_W0$="":WHILE VIL_W0$<>"#MG":GOSUB*VIL_LNR:WEND
  605. 13020 RETURN
  606. 13025 *VIL_MG_ENVW
  607. 13030 PRINT#1,"#MG"
  608. 13035 RETURN
  609. 13040 *VIL_MG_LD
  610. 13045 LOAD@VIL_MG_F$+".MGD",VIL_MG_MGD%
  611. 13050 LOAD@VIL_MG_F$+".MGI",VIL_MG_MGI&
  612. 13055 LOAD@VIL_MG_F$+".MPD",VIL_MG_MPD%
  613. 13060 LOAD@VIL_MG_F$+".MPI",VIL_MG_MPI&
  614. 13065 RETURN
  615. 13070 *VIL_MG_SETP
  616. 13075 FOR VIL_I%=0 TO 15
  617. 13080 PALETTE VIL_I%,[(VIL_MG_MPD%(VIL_MG_MPI&(VIL_MG_PN%)+VIL_I%)AND&HF0),(VIL_MG_MPD%(VIL_MG_MPI&(VIL_MG_PN%)+VIL_I%)AND&HF00)/&H10,(VIL_MG_MPD%(VIL_MG_MPI&(VIL_MG_PN%)+VIL_I%)AND&HF)*&H10]
  618. 13085 NEXT
  619. 13090 RETURN
  620. 13095 *VIL_MG_PUTG
  621. 13100 PUT@A(VIL_MG_X%,VIL_MG_Y%)-(VIL_MG_X%+VIL_MG_MGD%(VIL_MG_MGI&(VIL_MG_GN%)+2),VIL_MG_Y%+VIL_MG_MGD%(VIL_MG_MGI&(VIL_MG_GN%)+3)),VIL_MG_MGD%,,,,,VIL_MG_MGI&(VIL_MG_GN%)+4
  622. 13105 RETURN
  623.